<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>一个闭包的经典应用</title>
</head>
<body>
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>
</body>

<script>

    //Mark 3.1.2

    var nodes = document.getElementsByTagName('div')

    // for (var i = 0; i < nodes.length; i++) {
    // //TODO: 解决方案1 用let声明变量可以解决,为什么呢？
    // //for (let i = 0; i < nodes.length; i++) {
    //     nodes[i].onclick = function () {
    //         alert(i)
    //     };
    // }

    //TODO: 解决方案2
    for (var i = 0; i < nodes.length; i++) {
        (function (param) {
            nodes[param].onclick = function () {
                console.log(param);
            };
        })(i);
    }


</script>

</html>